#ifndef PROTOCOL_H
#define PROTOCOL_H

typedef unsigned int uint;

enum ENUM_MSG_TYPE//消息类型枚举
{
    ENUM_MSG_TYPE_MIN = 0,
    //协议中定义注册的请求和响应类型
    ENUM_MSG_TYPE_REGIST_REQUEST,//请求
    ENUM_MSG_TYPE_REGIST_RESPOND,//响应

    //登录
    ENUM_MSG_TYPE_LOGIN_REQUEST,
    ENUM_MSG_TYPE_LOGIN_RESPOND,

    //查找用户
    ENUM_MSG_TYPE_FIND_USER_REQUEST,
    ENUM_MSG_TYPE_FIND_USER_RESPOND,

    //在线用户
    ENUM_MSG_TYPE_ONLINE_USER_REQUEST,
    ENUM_MSG_TYPE_ONLINE_USER_RESPOND,

    //添加好友
    ENUM_MSG_TYPE_ADD_FRIEND_REQUEST,
    ENUM_MSG_TYPE_ADD_FRIEND_RESPOND,

    //同意添加好友
    ENUM_MSG_TYPE_ADD_FRIEND_AGREE_REQUEST,
    ENUM_MSG_TYPE_ADD_FRIEND_AGREE_RESPOND,

    //在线好友
    ENUM_MSG_TYPE_ONLINE_FRIEND_REQUEST,
    ENUM_MSG_TYPE_ONLINE_FRIEND_RESPOND,

    //删除好友
    ENUM_MSG_TYPE_DEL_FRIEND_REQUEST,
    ENUM_MSG_TYPE_DEL_FRIEND_RESPOND,

    //聊天
    ENUM_MSG_TYPE_CHAT_REQUEST,
    ENUM_MSG_TYPE_CHAT_RESPOND,

    //创建文件夹
    ENUM_MSG_TYPE_MKDIR_REQUEST,
    ENUM_MSG_TYPE_MKDIR_RESPOND,

    //刷新文件
    ENUM_MSG_TYPE_FLUSH_FILE_REQUEST,
    ENUM_MSG_TYPE_FLUSH_FILE_RESPOND,

    //删除文件夹
    ENUM_MSG_TYPE_DEL_DIR_REQUEST,
    ENUM_MSG_TYPE_DEL_DIR_RESPOND,

    //文件重命名
    ENUM_MSG_TYPE_RENAME_FILE_REQUEST,
    ENUM_MSG_TYPE_RENAME_FILE_RESPOND,

    //删除文件
    ENUM_MSG_TYPE_DEL_FILE_REQUEST,
    ENUM_MSG_TYPE_DEL_FILE_RESPOND,

    //移动文件
    ENUM_MSG_TYPE_MOVE_FILE_REQUEST,
    ENUM_MSG_TYPE_MOVE_FILE_RESPOND,

    //上传文件
    ENUM_MSG_TYPE_UPLOAD_FILE_REQUEST,
    ENUM_MSG_TYPE_UPLOAD_FILE_RESPOND,

    //上传文件数据
    ENUM_MSG_TYPE_UPLOAD_FILE_DATA_REQUEST,
    ENUM_MSG_TYPE_UPLOAD_FILE_DATA_RESPOND,

    //下载文件
    ENUM_MSG_TYPE_DOWNLOAD_FILE_REQUEST,
    ENUM_MSG_TYPE_DOWNLOAD_FILE_RESPOND,

    //下载文件数据
    ENUM_MSG_TYPE_DOWNLOAD_FILE_DATA_REQUEST,
    ENUM_MSG_TYPE_DOWNLOAD_FILE_DATA_RESPOND,

    //分享文件
    ENUM_MSG_TYPE_SHARE_FILE_REQUEST,
    ENUM_MSG_TYPE_SHARE_FILE_RESPOND,

    //同意分享文件
    ENUM_MSG_TYPE_SHARE_FILE_AGREE_REQUEST,
    ENUM_MSG_TYPE_SHARE_FILE_AGREE_RESPOND,



    ENUM_MSG_TYPE_MAX = 0x00fffffff,
};

typedef struct PDU {
    uint uiPDULen;//协议总长度
    uint uiMsgLen;//消息长度
    uint uiMsgType;//消息类型
    char caData[64];//实际参数
    char caMsg[];//实际消息
}PDU;

PDU* mkPDU(uint uiMsgLen);

struct FileInfo{
    char caName[32];//文件名
    int FileType;//文件类型 0：目录 1：文件
};

#endif // PROTOCOL_H
